Updating Electronic Devices Using a Push Model

ABSTRACT

Automatically updating electronic devices using a push model. A set of electronic devices may be selected for an update. A first plurality of devices of the set of devices for which the update is valid may be determined in accordance with a set of rules, e.g., safety check rules or business rules, where the determining is based on stored configuration information for each of the devices. Current configuration information and accessibility information may be received for each of the first plurality of devices, and based on the received current configuration information and accessibility information and the stored configuration information, a second plurality of devices of the set of devices for which the update is valid may be determined, where the second plurality is a subset of the first plurality. The update may be applied automatically to at least some of the second plurality of devices.

FIELD OF THE INVENTION

This invention relates to electronic device updating in general, andmore particularly, to automatic updating of electronic devices using apush model.

DESCRIPTION OF THE RELATED ART

The modern proliferation of networked electronic devices, particularlythe “Internet of Things” (IOT), e.g., machine to machine networkinteractions, and accelerated development cycles has resulted in anincrease in firmware, software, or configuration updates, whereby thedevices may be modified, e.g., to provide updated feature sets, correctbugs or other errors, and so forth, e.g., by a central entity.

In typical electronic device (firmware, software, or configuration)updating approaches, a vendor or manufacturer informs devices (or usersof such devices) that an update, e.g., a new version of the firmware, isavailable, and the devices (or endpoints) “come and get it” if they wantit. In other words, the devices are updated via a “pull model”, wherethe devices “pull” the update from some server computer(s), e.g., over anetwork, e.g., the Internet, as desired. In other words, the devicesthemselves (under control of their users) are responsible for requestingor initiating the updates. FIG. 1 is a high level illustration ofelectronic device updating using a pull model, according to the priorart. As FIG. 1 shows, each electronic device 12 (A, B, C, and D)requests or initiates an update from a configuration device 10, e.g.,via a request sent from the electronic device to the configurationdevice 10, as indicated by the dashed arrows in the figure. In responseto these device requests/initiations, the configuration device 10updates each device, e.g., by sending an update package to the deviceover the network and applying the update to the device. Note that asused herein, similar or identical devices may be referred to genericallyor collectively by a single alphanumeric reference, e.g., electronicdevices 10, and may be distinguished individually via alphabeticsuffixes, e.g., respective electronic devices 10A, 10B, and so forth.

However, there are disadvantages to the “pull model” approach. Forexample, a user of a device may not be timely in initiating such anupdate after an update notification, and thus, the associated device mayremain vulnerable to some newly discovered threat against which a timelyupdate may have protected the device. As another example, particularlyregarding the IOT, electronic devices increasingly operate on amachine-to-machine basis, where many (or even most) machines do not havean associated direct user, but rather, interact with, and operateprimarily (or even exclusively) with respect to, other machines, andthus do not lend themselves to user mediated updating, e.g., stationaryrouters, gasoline storage tanks, remote instruments, thermostats, and soforth. Such “thing” endpoints, not having an owner like a smartphonedoes, are rarely granted the autonomy to make a “pull” decisionregarding device updates.

Accordingly, improved systems and methods for updating electronicdevices are needed.

SUMMARY OF THE INVENTION

Systems and methods for updating electronic devices via a push model arepresented.

A system for updating devices using a push model may include aprocessor, and a memory medium coupled to the processor, where thememory medium stores program instructions executable by the processor toperform embodiments of the following method. For example, the processorand memory medium may be included in a configuration device that iscommunicatively coupled to a plurality of electronic devices, e.g.,stationary routers, smartphones, etc., for which updates may be requiredor desired.

In some embodiments, a set of target devices may be selected for anupdate, and a first plurality of target devices of the set of targetdevices for which the update is valid may be determined in accordancewith a set of rules, e.g., safety check rules and/or business rules. Insome embodiments, the rules may apply to multiple different device typesor models.

The determining of the first plurality of target devices may be based onstored configuration information for each of the target devices. Currentconfiguration information and accessibility information for each of thefirst plurality of target devices may be received, and, based on thereceived current configuration information, the accessibilityinformation, and the stored configuration information, a secondplurality of target devices of the set of target devices for which theupdate is valid may be determined. The current configuration for eachtarget device may be received from one or more of: the target device,cloud storage, or a storage device. The second plurality may be a subsetof the first plurality. In some embodiments, determining the secondplurality of target devices of the set of target devices may be furtherbased on the set of rules.

The update may then be applied to each of at least some of the secondplurality of target devices.

In some embodiments, determining the first plurality of target devicesof the set of target devices for which the update is valid may includedetermining compatibility of the update with one or more of: hardware ofeach target device, software of each target device, or configurationinformation of each target device. Determining compatibility of theupdate may be based at least partly on one or more of: version ofsoftware for each target device, or version of configuration informationfor each target device.

The update may be any of a variety of kinds of update, e.g., the updatemay include one or more of: firmware modification, firmwareconfiguration modification, software modification (e.g., including newsoftware, replacement software, software upgrades, etc.), softwareconfiguration modification, at least one parameter modification, or atleast one parameter configuration modification, among others. Note thatthe software may include operating system software, softwareapplications, drivers, or any other type of software, as desired.

In one embodiment, determining the first plurality of target devices mayinclude determining at least one target device for which the update isnot valid, and the method may further include presenting a graphicaluser interface (GUI), receiving, to the GUI, user input manuallyoverriding the determining the at least one target device, and includingthe at least one target device in the first plurality of target devicesin response to the receiving user input.

Similarly, in some embodiments, determining the first plurality oftarget devices may include determining at least one target device forwhich the update is valid, and the method may include presenting agraphical user interface (GUI), receiving, to the GUI, user inputmanually overriding the determining the at least one target device, andexcluding the at least one target device from the first plurality oftarget devices in response to said receiving user input.

In a further embodiment, the method may include presenting a graphicaluser interface (GUI), receiving, to the GUI, user input indicating theset of target devices for the update, and performing the selecting inresponse to the indicating. In another embodiment, the method mayinclude receiving, to the GUI, user input modifying the safety checkand/or business rules. Thus, a GUI may be provided whereby a user ormanager may invoke, stop, modify, or otherwise manage the push basedupdating techniques disclosed herein.

BRIEF DESCRIPTION OF THE DRAWINGS

Advantages of the present invention will become apparent to thoseskilled in the art with the benefit of the following detaileddescription and upon reference to the accompanying drawings in which:

FIG. 1 is an illustration of electronic device updating over a networkusing a pull model, according to the prior art;

FIG. 2 is an illustration of electronic device updating over a networkusing a push model, according to one embodiment;

FIG. 3 is a flowchart that illustrates a method of updating electronicdevices using a push model, according to one embodiment; and

FIG. 4 is an exemplary block diagram of a computing device, according toone embodiment.

While the invention is susceptible to various modifications andalternative forms, specific embodiments thereof are shown by way ofexample in the drawings and will herein be described in detail. Thedrawings may not be to scale. It should be understood, however, that thedrawings and detailed description thereto are not intended to limit theinvention to the particular form disclosed, but to the contrary, theintention is to cover all modifications, equivalents, and alternativesfalling within the spirit and scope of the present invention as definedby the appended claims.

DETAILED DESCRIPTION

In the following description, numerous specific details are set forth toprovide a thorough understanding of the present invention. However, onehaving ordinary skill in the art should recognize that the invention maybe practiced without these specific details. In some instances,well-known structures and techniques have not been shown in detail toavoid obscuring the present invention.

FIG. 2 is an illustration of electronic device updating using a pushmodel over a network, according to one embodiment. As may be seen, inFIG. 2 a device 100, e.g., a configuration device, e.g., a centralconfiguration device, may be communicatively coupled over a network,such as the Internet, to a plurality of electronic devices 120, in thisexemplary case, electronic devices 120A-120D. Note that the term“central configuration device” denotes any type of computing device thatoperates to provide updates to (i.e., to configure) multiple electronicdevices, e.g., over a network, such as the Internet. The use of acentral configuration device 100 may allow, facilitate, or providemanaged updates or deployments across an arbitrary number of sites(e.g., business or enterprise sites) or devices 120.

As FIG. 2 indicates, in contrast with the prior art “pull” basedupdating system of FIG. 1, in the system of FIG. 2, the electronicdevices 120 do not send requests for updates, but rather the (centralconfiguration) device 100 itself initiates (including providing) theupdates for the connected devices 120. The device 100 may be configuredto perform embodiments of the techniques disclosed herein. More detailsregarding such updating are provided below with reference to the methodof FIG. 3.

FIG. 3—Method of Updating Electronic Devices Using a Push Model

FIG. 3 illustrates a method for updating electronic devices using a pushmodel, according to one embodiment. The method shown in FIG. 3 may beused in conjunction with any of the computing systems or devices shownin the above Figures, among other devices. In some embodiments, themethod of FIG. 3 may be performed by an embodiment of the centralconfiguration device 100 of FIG. 2. In various embodiments, some of themethod elements shown may be performed concurrently, in a differentorder than shown, or may be omitted. Additional method elements may alsobe performed as desired. As shown, this method may operate as follows.

First, in 302, a set of target (electronic) devices may be selected foran update. The set of target devices may be selected via any of avariety of ways. For example, a database may be queried to identifytarget devices for a particular update. In one embodiment, a database of(electronic device) configurations may be queried (e.g., by the device100) to create task lists of updates to be pushed, and a set of targetdevices that are at least candidates for the update(s) may bedetermined. For example, in one exemplary case in the context ofsmartphones, the database may be queried to “find all the smartphonesthat have “amber alerts” turned off”, and a corresponding task/update tobe performed on these devices may be to “turn the alert back on”.

In 304, a first plurality of target devices of the set of target devicesfor which the update is valid may be determined in accordance with a setof rules, e.g., safety check rules and/or business rules.

As used herein, safety check rules relate to prevention of dangerous ortechnically inappropriate updates to the devices, and business rulesrelate to ensuring that updates for devices are appropriate for andconsistent with business policies or directives of a business entity (orother institution, e.g., non-profit organizations, governments,societies, political parties, etc.). For example, exemplary safety checkrules are: “do not attempt updates on devices with less than 2 Gb ofmemory”, and “only update devices that implement protocol X”. Exemplarybusiness rules are: “do not attempt to update General Electric's (GE's)iPhone 3®s, only update GE's iPhone 4®s and iPhone 5®s”, and “onlyupdate devices of company executives”.

In one embodiment, the rules may apply to multiple different devicetypes or models, and may be used in combination. In one embodiment, thedetermination of the first plurality of target devices may be made basedon stored configuration information for each of the target devices (aswell as the rules). Thus, similar to 302, in some embodiments, adatabase of (electronic device) configurations may be queried (e.g., bythe device 100) to determine the first plurality of target devices,where one or more of the rules may be applied prior to the query, aspart of the query, or to the results of the query. More specifically, insome embodiments, relevant subsets of the set of target devices toupdate may be identified, e.g., for each update, a respective subset oftarget devices may be determined, where in at least one embodiment, therules may be used to determine at least some of the respective subsetsof target devices.

For example, in one embodiment, the method may identify all of thesmartphones owned by a business entity, e.g., General Electric, where acorresponding update may be to “disable use of Virtual Private Networks(VPNs)” for these (GE owned) devices. Note that in various embodiments,the database of configurations may be implemented locally, i.e., on thedevice 100 itself, or may be remote, i.e., accessed by the device 100over the network (e.g., the Internet or another network, e.g., a LAN).

In 306, current configuration information and accessibility informationfor each of the first plurality of target devices may be received, e.g.,over the network. In one embodiment, the current configurationinformation and accessibility information may be received from theelectronic devices, e.g., in response to a request by the device 100. Inanother embodiment, the current configuration information andaccessibility information may be received from a database, e.g., over anetwork, where the database is current, i.e., stores the currentconfiguration information and accessibility information for each of thefirst plurality of target devices. More generally, the currentconfiguration for each target device may be received from one or moreof: the target device, cloud storage, or a storage device.

In 308, a second plurality of target devices of the set of targetdevices for which the update is valid may be determined based on thereceived current configuration information, the accessibilityinformation, and the stored configuration information. The secondplurality may be a subset of the first plurality. Moreover, in someembodiments, the determination of the second plurality of target devicesmay be further based on the rules, e.g., safety check rules and/orbusiness rules, described above.

In some embodiments, the method may include automatically applying (orattempting to apply), i.e., pushing, the update to each of at least someof the second plurality of target devices. Note that due to performanceof the previous method elements (302-308), the updates may besubstantially guaranteed to be appropriate and successful. However, insome cases trouble may still arise, e.g., transient network problems,temporary unavailability of a device, an unexpected change or error in adevice's configuration, and so forth. Accordingly, in some embodiments,the rules, e.g., safety check rules (and/or business rules), may be usedto stop unsuccessful updates. An exemplary rule to this effect may be:“if 1% of the updates fail, stop the process of updating (e.g., “recall”the update)”. In at least one embodiment, in addition to stopping theunsuccessful update for a device, the method may retry the update, e.g.,if the device is simply not contactable at the moment, e.g., may attemptto apply the update after some time has elapsed.

In one embodiment, once the update has been pushed (applied orinitiated) to a device, the method may request a reboot of the device,then receive information regarding the current state or configuration ofthe device, e.g., from one or more of: the target device, cloud storage,or a storage device. The current state may include one or more of: thecurrent configuration of the device, currently installed firmware,software, or configuration data (e.g., including version information),system or device metrics and/or system or device diagnostics, e.g.,temperature, connectivity, etc. The method may then compare this stateor configuration information to an expected state or configuration, andbased on the comparison, determine if the update was successful, e.g.,did not cause problems. In some embodiments, file integrity modeling maybe used to assess the device configuration and/or success of the update.

Moreover, in some embodiments, the above-described method elements(302-308) may be repeated, e.g., for respective updates.

Further Exemplary Embodiments

The following presents further exemplary embodiments of the techniquesdiscussed herein, although it should be noted that the embodimentsdescribed are exemplary only, and are not intended to limit theinvention to any particular form or functionality.

In various embodiments, determining the first plurality of targetdevices of the set of target devices for which the update is validincludes determining compatibility of the update with one or more of:hardware of each target device, software of each target device, orconfiguration information of each target device. For example,determining compatibility of the update may be based at least partly onone or more of: version of software for each target device, or versionof configuration information for each target device.

In one embodiment, a graphical user interface (GUI) may be presented,e.g., on or by the configuration device 100, or some other devicecoupled to the configuration device. The above determining the firstplurality of target devices (304) may include determining at least onetarget device for which the update is not valid. Moreover, in someembodiments, the method may further include receiving, to the GUI, userinput manually overriding the determining the at least one target device(for which the update is not valid), and including the at least onetarget device in the first plurality of target devices in response tothe receiving user input (overriding the determining). In other words,in some embodiments, a GUI may be provided whereby the user may overridethe method's determination of one or more of the automaticallydetermined target devices for which the update is deemed invalid, andthe one or more devices may be added to the first plurality of targetdevices.

Conversely, in some embodiments, the GUI may be used to override themethod's inclusion of target devices in the first plurality of targetdevices. More specifically, the above determining the first plurality oftarget devices (304) may include determining at least one target devicefor which the update is valid, and the method may include receiving, tothe GUI, user input manually overriding the determining the at least onetarget device, and excluding the at least one target device from thefirst plurality of target devices in response to the receiving userinput (overriding the determining).

In one embodiment, a GUI may be implemented and presented regarding therules of 304, e.g., safety check rules and/or business rules, and themethod may further include receiving, to the GUI, user input indicatingthe set of target devices for the update, and the selecting of 302 maybe performed in response to the indicating. In some embodiments, themethod may include receiving, to the GUI, user input modifying therules. Thus, the user may be provided the opportunity and means to guideor manually override one or more of the automated decisions of themethod, or change the rules guiding such automated decision making.Thus, a GUI may be provided whereby a user or manager may invoke, stop,modify, or otherwise manage the push based updating techniques disclosedherein.

It should be noted that the update may be any of a variety of types ofupdate. For example, in various embodiments, the update may include oneor more of: firmware modification, firmware configuration modification,software (e.g., OS, applications, drivers) modification, softwareconfiguration modification, at least one parameter modification, e.g., anew value of a parameter or a new parameter, or at least one parameterconfiguration modification, e.g., limits or constraints on the values ofa parameter, formats, etc. Thus, the update may pertain to any code ordata stored on and used or executed by an electronic device, e.g., anycode or data stored in some kind of memory of the device, e.g., flashmemory, that affects the operation of the device.

Thus, in various embodiments, rules (business and/or safety check rules)may be used to determine acceptable updates (configuration jobs). Therules may be encoded and used in various ways, e.g., as mentioned abovewith respect to method element 304. Additionally or alternatively, therules may be utilized at a later stage of the method, e.g., methodelement 308, where, following the above example regarding GEsmartphones, the rules may include business rules that may specify thatthe method not attempt to update GE's iPhone 3®s, only update GE'siPhone 4®s and iPhone 5®s, or only update phones that have amber alertsturned on, although these particular examples are meant to beillustrative only. Thus, the rules may operate to further filter or cullthe electronic devices to which the update may or will be applied.

In one embodiment, safety check rules may be utilized to stopunsuccessful updates. For example, in some embodiments, during or afterapplication of the update to the electronic devices, one or more of thedevices 120, e.g., end or endpoint devices, e.g., smartphones, mayreport their status back to the configuration device 100, which may thenutilize the safety check rules to take responsive action. For example,at least one device 120 may report an unsuccessful update, e.g., due toproblems with the device, the update, or some other issue preventing asuccessful update, and the method may attempt to reapply the update,apply a different update, restore a previous configuration, send anotification to the device or the device's owner or user, etc., based,for example, on a safety check rule, e.g., “if an update fails, notify amanager, and do not attempt to reapply the update.”

In some embodiments, update status reports may be received (byconfiguration device 100) from most or all of the devices being updated,and the configuration device 100 may analyze the reports and takeaccordant action based on a safety check rule. For example, in oneembodiment, as the reports are received the device 100 may track thepercentage (or fraction) of electronic devices for which the update hasfailed (“sick updates” have been attempted), and if this percentageexceeds some specified threshold, e.g., 1%, 2%, 5%, and so forth, maystop the update process, recall the updates, rollback the updates, e.g.,undo the successful updates, or take some other action, in accordancewith the safety check rule, e.g., “stop the update if updates for morethan 1% of the devices fail”. Note that some minimum number of deviceupdate instances may be required before applying such statistics, whichthe safety check rule (or another safety check rule) may furtherspecify.

In one embodiment, at least one of the electronic devices 120 may beconfigured to perform a “sanity check” regarding the offered (pushed)update, and may reject the update if it is determined to beinappropriate, e.g., unsafe, incompatible, or simply unwelcome. Thisability of the devices 120 may be particularly important in the presentpush model based approach, in that under the push model entirely newfeatures and capabilities may be offered that the device 120 or its userknow nothing about, and which the user (or device 120) may not want.Thus, even under this push model approach, the user or device 120 may beprovided the opportunity to decline the update, which is much moreefficient than applying the update, then undoing it.

In some embodiments, the method may further include (the configurationdevice 100) calculating an approximate time to deployment completion,e.g., for each device 120, or for the entire second plurality of devices120. This feature may be beneficial in helping the device 100 or auser/manager of the device 100 more efficiently manage and performmultiple updates. For example, estimates for update deployment may aidin devising an update schedule.

In various embodiments, automatically applying (or attempting to apply)the update(s) to each of at least some of the second plurality of targetdevices may be initiated (or performed) sequentially and/orconcurrently. For example, in one embodiment where the device updatesare initiated (or performed) sequentially, the method may confirm that acurrent device's update is complete and non-problematic beforeinitiating the next device's update. However, in some embodiments whereupdates are initiated sequentially, a tolerance may be specifiedregarding the amount of time it takes to initiate or perform an updateto a device, and if the tolerance is exceeded, the method may stop (orrecall) the update and proceed to the next device.

In embodiments where updates are initiated (or performed) concurrently,a level of concurrency may be specified, e.g., based on availableresources of the configuration device, the number of devices to update,network conditions, etc., e.g., updates of groups of (approximately) ndevices may be initiated at a time, i.e., concurrently. In other words,the specified level of concurrency may include the number of devices toupdate concurrently. Note that the devices in such specified groups(numbers) of devices may be respectively updated concurrently, whereasthe groups may be respectively updated sequentially. In other words, afirst group may be updated concurrently, then a second group may beupdated concurrently, and so forth. In further embodiments, two or moreof the groups may be updated concurrently, e.g., one group of devicesmay be updated concurrently while another group of devices is alsoupdated concurrently.

In one embodiment, an initial portion of the devices may be updatedsequentially, and in response to achieving a specified level of success,e.g., 99.9% successful updates, may initiate (or perform) updates for atleast some of the remaining devices (of the second plurality)concurrently, e.g., in accordance with the specified level ofconcurrency.

Thus, embodiments of the above techniques may be used to determine alist of electronic devices to which an update is to be applied (thesecond plurality of devices mentioned in 308 above), push the updateindividually to each device, monitor the update process/deployment, andstop any update that is causing trouble or is declined.

Staged Updating

As noted above, in some embodiments, automatically applying (orattempting to apply) the update(s) to at least some of the targetdevices may be initiated (or performed) sequentially, and that specifiedcriteria regarding initial device updates may be used to determine how(or even if) subsequent updates are to be applied. The followingpresents embodiments of a method for performing staged updating ofelectronic devices, e.g., smart phones, etc. Note that in variousembodiments, any of the above features (or none) may be utilized orincorporated in the below method as desired.

In one embodiment, an indication of a plurality of target devices forwhich an update has been determined to be valid may be determinedaccording to a set of rules, e.g., safety check rules and/or businessrules. The two or more target devices of the plurality of target devicesmay be sequentially updated, and this sequential updating may bemonitored, thereby generating first results. Moreover, the method mayfurther include concurrently updating remaining target devices of theplurality of target devices in response to the first results meetingspecified criteria.

In some embodiments, the update being valid for a target device means orincludes the update being compatible with one or more of: hardware ofthe target device, software of the target device, or configurationinformation of the target device. For example, in one embodiment, thecompatibility of the update may be based at least partly on one or moreof: version of software for each target device, or version ofconfiguration information for each target device. Note that in someembodiments, the rules may apply to multiple different device types ormodels.

In one embodiment, the first results may include an indication of atleast one target device for which the update was not successful, inwhich case, the method may determine that the update was not successfulbecause the at least one target device was not accessible. The methodmay then determine subsequently that the at least one target device isaccessible, and may update the at least one target device in response tothis subsequent determination.

In some embodiments, a graphical user interface (GUI) may beimplemented, and the first results may include an indication of at leastone target device for which the update is valid. The method may furtherinclude receiving, to the GUI, user input manually overriding the firstresults for the at least one target device, and excluding the at leastone target device from the above concurrently updating in response toreceiving the user input. In other words, user input to the GUI maymanually override the automatic updating process in this regard.

As discussed above, in various embodiments the update may include one ormore of: firmware modification, firmware configuration modification,software modification, software configuration modification, at least oneparameter modification, or at least one parameter configurationmodification, among others.

In some embodiments, a GUI may be implemented, and may be configured toreceive user input modifying the rules. Thus, the method may includereceiving such user input to the GUI modifying the rules.

In one embodiment, concurrently updating remaining target devices of theplurality of target devices may include initiating concurrent updatingof at least a portion of the remaining target devices using a firstlevel of concurrency, monitoring the concurrent updating, therebygenerating further results, and in response to the further resultsmeeting further criteria, initiating concurrent updating of at least asuccessive portion of the target devices at a second level ofconcurrency, where the second level of concurrency is greater than thefirst level of concurrency. Additionally, in some embodiments,concurrently updating of remaining target devices of the plurality oftarget devices may further include repeating the monitoring and theinitiating concurrent updating one or more times for further successiveportions of the remaining target devices at respective successivelygreater levels of concurrency. Thus, the above technique may be appliedsuccessively to achieve greater levels of concurrency as warranted bysuccessive results.

In one embodiment, a GUI may be implemented that is configured toreceive user input specifying sizes of the at least a successive portionand the further successive portions of the remaining target devices,and/or rules for automatically specifying the sizes of the at least asuccessive portion and the further successive portions of the remainingtarget devices. Accordingly, the method may include receiving such userinput to the GUI, and may proceed accordingly.

In some embodiments, the above concurrently updating of remaining targetdevices of the plurality of target devices may include initiatingconcurrent updating of at least a portion of the remaining targetdevices using a first level of concurrency, and monitoring theconcurrent updating, thereby generating further results. Then, inresponse to the further results failing to meet further criteria,sequential updating of at least a successive portion of the remainingtarget devices may be initiated.

The method may also include rolling back the update for at least one ofthe plurality of target devices.

In one embodiment, the first results meeting specified criteria includesconfirmation that, for each target device of at least a subset of thetarget devices, a current state of the target device matches an expectedstate of the target device. The current state of the target device maybe received from any source(s), e.g., one or more of: the target device,cloud storage, or a storage device, among others.

In some embodiments, the sequential updating and/or the concurrentlyupdating may include deploying an update to a first target device, andrequesting reboot of the first target device.

Thus, embodiments of the above techniques may provide for improvedupdating of electronic devices.

FIG. 4—Computing Device Block Diagram

FIG. 4 is a block diagram 402 representing one embodiment of a computingdevice, such as configuration device 100, or any of the electronicdevices 120. As used herein, a computing device may be referred to assimply a “computer”. It is noted, however, that any type of computingdevice configuration or architecture can be used as desired, and FIG. 4illustrates an exemplary embodiment. For example, in variousembodiments, the computing device may be a general purpose computersystem, a computer implemented on a card installed in a chassis, asmartphone, an embedded device, a stationary router, a remoteinstrument, a smart sensor, or any other type of computing device thatprovides, manages, or requires updates. Elements of a computer notnecessary to understand the present description have been omitted forsimplicity.

The computer may include at least one central processing unit or CPU(processor) 160 which is coupled to a processor or host bus 162. The CPU160 may be any of various types, including an x86 processor, e.g., aPentium class, a PowerPC processor, a CPU from the SPARC family of RISC(Reduced Instruction Set Computing) processors, or an ARM (Advanced RISCMachine) processor, among others. A memory medium, typically comprisingRAM and referred to as main memory, 166 is coupled to the host bus 162by means of memory controller 164. The main memory 166 may store programinstructions implementing embodiments of the novel techniques disclosedherein (see, e.g., the method of FIG. 3, described above). The mainmemory may also store operating system software, as well as othersoftware for operation of the computer.

The host bus 162 may be coupled to an expansion or input/output bus 170by means of a bus controller 168 or bus bridge logic. The expansion bus170 may be the PCI (Peripheral Component Interconnect) expansion bus,although other bus types can be used. The expansion bus 170 may includeslots for various devices or components coupled to the expansion bus170, such as a video display subsystem 180, hard (or flash) drive 182, anetwork card 116, and a wireless transceiver 186, etc., among others.

As noted above, in various embodiments, the computing device(s) may beof any type desired.

Although the embodiments above have been described in considerabledetail, numerous variations and modifications will become apparent tothose skilled in the art once the above disclosure is fully appreciated.It is intended that the following claims be interpreted to embrace allsuch variations and modifications. Other embodiments may include variousmodifications and alterations that still fall within the scope of thecontemplated embodiments. Accordingly, this description is to beconstrued as illustrative only and is for the purpose of teaching thoseskilled in the art the general manner of carrying out the invention. Itis to be understood that the forms of the invention shown and describedherein are to be taken as examples of embodiments. Elements andmaterials may be substituted for those illustrated and described herein,parts and processes may be reversed or omitted, and certain features ofthe invention may be utilized independently, all as would be apparent toone skilled in the art after having the benefit of this description ofthe invention. Changes may be made in the elements described hereinwithout departing from the spirit and scope of the invention asdescribed in the following claims. The words “include”, “including”, and“includes” mean including, but not limited to. As used herein, thesingular forms “a”, “an” and “the” include plural referents unless thecontent clearly indicates otherwise. Thus, for example, reference to “adevice” includes a combination of two or more devices.

We claim:
 1. A non-transitory computer accessible memory medium thatstores program instructions executable to perform: selecting a set oftarget devices for an update; determining a first plurality of targetdevices of the set of target devices for which the update is valid inaccordance with a set of rules, wherein said determining is based onstored configuration information for each of the target devices;receiving current configuration information and accessibilityinformation for each of the first plurality of target devices; anddetermining, based on the received current configuration information,the accessibility information, and the stored configuration information,a second plurality of target devices of the set of target devices forwhich the update is valid, wherein the second plurality is a subset ofthe first plurality.
 2. The non-transitory computer accessible memorymedium of claim 1, wherein the set of rules comprises at least one of: aset of safety check rules; or a set of business rules.
 3. Thenon-transitory computer accessible memory medium of claim 1, whereinsaid determining the second plurality of target devices of the set oftarget devices is further based on the set of rules.
 4. Thenon-transitory computer accessible memory medium of claim 1, wherein theprogram instructions are further executable to perform: automaticallyapplying the update to each of at least some of the second plurality oftarget devices.
 5. The non-transitory computer accessible memory mediumof claim 1, wherein said determining the first plurality of targetdevices of the set of target devices for which the update is validcomprises determining compatibility of the update with one or more of:hardware of each target device; software of each target device; orconfiguration information of each target device.
 6. The non-transitorycomputer accessible memory medium of claim 5, wherein said determiningcompatibility of the update is based at least partly on one or more of:version of software for each target device; or version of configurationinformation for each target device.
 7. The non-transitory computeraccessible memory medium of claim 1, wherein the rules apply to multipledifferent device types or models.
 8. The non-transitory computeraccessible memory medium of claim 1, wherein the program instructionsare further executable to implement a graphical user interface (GUI),wherein said determining the first plurality of target devices comprisesdetermining at least one target device for which the update is notvalid, and wherein the program instructions are further executable toperform: receiving, to the GUI, user input manually overriding saiddetermining the at least one target device; and including the at leastone target device in the first plurality of target devices in responseto said receiving user input.
 9. The non-transitory computer accessiblememory medium of claim 1, wherein the program instructions are furtherexecutable to implement a graphical user interface (GUI), wherein saiddetermining the first plurality of target devices comprises determiningat least one target device for which the update is valid, and whereinthe program instructions are further executable to perform: receiving,to the GUI, user input manually overriding said determining the at leastone target device; and excluding the at least one target device from thefirst plurality of target devices in response to said receiving userinput.
 10. The non-transitory computer accessible memory medium of claim1, wherein the program instructions are further executable to implementa graphical user interface (GUI), wherein the GUI is configured toperform one or more of: receiving, to the GUI, user input indicating theset of target devices for the update, wherein said selecting isperformed in response to said indicating; or receiving, to the GUI, userinput modifying the rules.
 11. The non-transitory computer accessiblememory medium of claim 1, wherein the current configuration for eachtarget device is received from one or more of: the target device; cloudstorage; or a storage device.
 12. The non-transitory computer accessiblememory medium of claim 1, wherein the update comprises one or more of:firmware modification; firmware configuration modification; softwaremodification; software configuration modification; at least oneparameter modification; or at least one parameter configurationmodification.
 13. A computer implemented method, comprising: a computingdevice performing: selecting a set of target devices for an update;determining a first plurality of target devices of the set of targetdevices for which the update is valid in accordance with a set of rules,wherein said determining is based on stored configuration informationfor each of the target devices; receiving current configurationinformation and accessibility information for each of the firstplurality of target devices; and determining, based on the receivedcurrent configuration information, the accessibility information, andthe stored configuration information, a second plurality of targetdevices of the set of target devices for which the update is valid,wherein the second plurality is a subset of the first plurality.
 14. Thecomputer implemented method of claim 13, wherein the set of rulescomprises at least one of: a set of safety check rules; or a set ofbusiness rules.
 15. The computer implemented method of claim 13, whereinsaid determining the second plurality of target devices of the set oftarget devices is further based on the set of rules.
 16. The computerimplemented method of claim 13, further comprising: automaticallyapplying the update to each of the second plurality of target devices.17. The computer implemented method of claim 13, wherein saiddetermining the first plurality of target devices of the set of targetdevices for which the update is valid comprises determiningcompatibility of the update with one or more of: hardware of each targetdevice; software of each target device; or configuration information ofeach target device.
 18. The computer implemented method of claim 17,wherein said determining compatibility of the update is based at leastpartly on one or more of: version of software for each target device; orversion of configuration information for each target device.
 19. Thecomputer implemented method of claim 13, wherein the rules apply tomultiple different device types or models.
 20. The computer implementedmethod of claim 13, wherein said determining the first plurality oftarget devices comprises determining at least one target device forwhich the update is not valid, the method further comprising: presentinga graphical user interface (GUI); receiving, to the GUI, user inputmanually overriding said determining the at least one target device; andincluding the at least one target device in the first plurality oftarget devices in response to said receiving user input.
 21. Thecomputer implemented method of claim 13, wherein said determining thefirst plurality of target devices comprises determining at least onetarget device for which the update is valid, the method furthercomprising: presenting a graphical user interface (GUI); receiving, tothe GUI, user input manually overriding said determining the at leastone target device; and excluding the at least one target device from thefirst plurality of target devices in response to said receiving userinput.
 22. The computer implemented method of claim 13, furthercomprising: presenting a graphical user interface (GUI); receiving, tothe GUI, user input indicating the set of target devices for the update,wherein said selecting is performed in response to said indicating; orreceiving, to the GUI, user input modifying the rules.
 23. The computerimplemented method of claim 13, wherein the current configuration foreach target device is received from one or more of: the target device;cloud storage; or a storage device.
 24. The computer implemented methodof claim 13, wherein the update comprises one or more of: firmwaremodification; firmware configuration modification; softwaremodification; software configuration modification; at least oneparameter modification; or at least one parameter configurationmodification.
 25. A system for updating devices using a push model, thesystem comprising: a processor; and a memory medium coupled to theprocessor, wherein the memory medium stores program instructionsexecutable by the processor to: select a set of target devices for anupdate; determine a first plurality of target devices of the set oftarget devices for which the update is valid in accordance with a set ofrules, wherein said determining is based on stored configurationinformation for each of the target devices; receive currentconfiguration information and accessibility information for each of thefirst plurality of target devices; and determine, based on the receivedcurrent configuration information, the accessibility information, andthe stored configuration information, a second plurality of targetdevices of the set of target devices for which the update is valid,wherein the second plurality is a subset of the first plurality.
 26. Thesystem of claim 25, wherein the set of rules comprises at least one of:a set of safety check rules; or a set of business rules.
 27. The systemof claim 25, wherein said determining the second plurality of targetdevices of the set of target devices is further based on the set ofrules.
 28. The system of claim 25, wherein the program instructions arefurther executable by the processor to: automatically apply the updateto each of the second plurality of target devices.